/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * PartidoElectoral.java
 *
 * Created on 14-ene-2013, 6:11:20
 */
package sisvoto.vista;

import java.awt.Image;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import sisvoto.DAO.ConsultasBD;
import sisvoto.ModeloDAO.CandidatoDAO;
import sisvoto.ModeloDAO.ImagenPartidoDAO;
import sisvoto.ModeloDAO.PartidoElectoralDAO;
import sisvoto.Utiles.FiltroImagen;
import sisvoto.Utiles.Mensajes;
import sisvoto.modelo.Candidato;
import sisvoto.modelo.Dignidad;
import sisvoto.modelo.Elector;
import sisvoto.modelo.ImagenPartido;
import sisvoto.modelo.PartidoElectoral;
import sisvoto.modeloTablas.BotonCellEditor;
import sisvoto.modeloTablas.BotonCellRenderer;
import sisvoto.modeloTablas.ModelTableCandidatos;

/**
 *
 * @author DJ2-PC
 */
public class AdministrarPartidoElectoral extends javax.swing.JDialog {

    String dirImagen = "";
    Image imagen;
    private ArrayList<Candidato> candidatos;
    private ArrayList<Dignidad> dignidades;
    private Candidato candidato;
    private PartidoElectoral partido;
    private Elector elector;
    ModelTableCandidatos modelotabla;
    private ArrayList<Candidato> candidatostemp = new ArrayList<>();
    private ArrayList<Candidato> candidatoselim = new ArrayList<>();
    private ImagenPartido imgenpartido;

    /** Creates new form PartidoElectoral */
    public AdministrarPartidoElectoral(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        this.candidato = new Candidato();
        this.elector = new Elector();
        this.partido = new PartidoElectoral();
        this.dignidades = (ArrayList<Dignidad>) new ConsultasBD().buscarTodos("Dignidad");
        this.candidatos = (ArrayList<Candidato>) new ConsultasBD().buscarPOR("Candidato", "elector", "'-1'");
        initComponents();
        ConsultarCandidatos();
    }

    public AdministrarPartidoElectoral(java.awt.Frame parent, boolean modal, PartidoElectoral partido) throws IOException {
        super(parent, modal);
        this.partido = partido;
        this.elector = new Elector();
        this.dignidades = (ArrayList<Dignidad>) new ConsultasBD().buscarTodos("Dignidad");
        initComponents();
        cargarImagen();
        ConsultarCandidatos();
        desactivarcasillas();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {
        bindingGroup = new org.jdesktop.beansbinding.BindingGroup();

        imagePanel1 = new com.mycsistemas.swingec.panel.ImagePanel();
        curvesPanel1 = new com.mycsistemas.swingec.panel.CurvesPanel();
        jLblPartidoElectoral = new javax.swing.JLabel();
        jLblNombre = new javax.swing.JLabel();
        jTxtAlias = new javax.swing.JTextField();
        jTxtNombre = new javax.swing.JTextField();
        jPanelPartidoElect = new javax.swing.JPanel();
        panelImagen = new com.mycsistemas.swingec.panel.ImagePanel();
        btnImagen = new javax.swing.JButton();
        jPanelCandidatos = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tblCandidatos = new javax.swing.JTable();
        jcbDignidades = new javax.swing.JComboBox();
        btnelector = new javax.swing.JButton();
        jLblAlias = new javax.swing.JLabel();
        jBtnNuevo = new javax.swing.JButton();
        jBtnEditar = new javax.swing.JButton();
        jBtnEliminar = new javax.swing.JButton();
        jBtnBuscar = new javax.swing.JButton();
        jBtnGuardar = new javax.swing.JButton();
        jBtnSalir = new javax.swing.JButton();
        jLblAlias1 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Partido Electoral");

        imagePanel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sisvoto/Recursos/''_10102012_1738.jpeg"))); // NOI18N
        imagePanel1.setLayout(null);

        curvesPanel1.setLayout(null);

        jLblPartidoElectoral.setFont(new java.awt.Font("Georgia", 3, 18));
        jLblPartidoElectoral.setForeground(new java.awt.Color(255, 255, 255));
        jLblPartidoElectoral.setText("Partido Electoral");
        curvesPanel1.add(jLblPartidoElectoral);
        jLblPartidoElectoral.setBounds(210, 50, 180, 30);

        jLblNombre.setFont(new java.awt.Font("Elephant", 0, 14));
        jLblNombre.setForeground(new java.awt.Color(255, 255, 255));
        jLblNombre.setText("Nombre:");
        curvesPanel1.add(jLblNombre);
        jLblNombre.setBounds(150, 110, 70, 30);

        org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, this, org.jdesktop.beansbinding.ELProperty.create("${partido.aliasp}"), jTxtAlias, org.jdesktop.beansbinding.BeanProperty.create("text"));
        bindingGroup.addBinding(binding);

        curvesPanel1.add(jTxtAlias);
        jTxtAlias.setBounds(220, 150, 200, 30);

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, this, org.jdesktop.beansbinding.ELProperty.create("${partido.nombre}"), jTxtNombre, org.jdesktop.beansbinding.BeanProperty.create("text"));
        bindingGroup.addBinding(binding);

        curvesPanel1.add(jTxtNombre);
        jTxtNombre.setBounds(220, 110, 200, 30);

        jPanelPartidoElect.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Partido Electoral", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 0, 10), java.awt.Color.white)); // NOI18N
        jPanelPartidoElect.setForeground(new java.awt.Color(255, 255, 255));
        jPanelPartidoElect.setOpaque(false);

        panelImagen.setLayout(null);

        javax.swing.GroupLayout jPanelPartidoElectLayout = new javax.swing.GroupLayout(jPanelPartidoElect);
        jPanelPartidoElect.setLayout(jPanelPartidoElectLayout);
        jPanelPartidoElectLayout.setHorizontalGroup(
            jPanelPartidoElectLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(panelImagen, javax.swing.GroupLayout.DEFAULT_SIZE, 98, Short.MAX_VALUE)
        );
        jPanelPartidoElectLayout.setVerticalGroup(
            jPanelPartidoElectLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(panelImagen, javax.swing.GroupLayout.DEFAULT_SIZE, 98, Short.MAX_VALUE)
        );

        curvesPanel1.add(jPanelPartidoElect);
        jPanelPartidoElect.setBounds(30, 50, 110, 120);

        btnImagen.setText("Imagen ");
        btnImagen.setActionCommand("Imagen");
        btnImagen.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnImagenActionPerformed(evt);
            }
        });
        curvesPanel1.add(btnImagen);
        btnImagen.setBounds(30, 170, 110, 23);

        jPanelCandidatos.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Candidatos", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 0, 10), java.awt.Color.white)); // NOI18N
        jPanelCandidatos.setForeground(new java.awt.Color(255, 255, 255));
        jPanelCandidatos.setOpaque(false);
        jPanelCandidatos.setLayout(null);

        tblCandidatos.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Dignidad", "Candidato", "Eliminar"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jScrollPane1.setViewportView(tblCandidatos);
        tblCandidatos.getColumnModel().getColumn(0).setResizable(false);
        tblCandidatos.getColumnModel().getColumn(1).setResizable(false);
        tblCandidatos.getColumnModel().getColumn(2).setResizable(false);

        jPanelCandidatos.add(jScrollPane1);
        jScrollPane1.setBounds(10, 60, 380, 110);

        jcbDignidades.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));

        org.jdesktop.beansbinding.ELProperty eLProperty = org.jdesktop.beansbinding.ELProperty.create("${dignidades}");
        org.jdesktop.swingbinding.JComboBoxBinding jComboBoxBinding = org.jdesktop.swingbinding.SwingBindings.createJComboBoxBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, this, eLProperty, jcbDignidades);
        bindingGroup.addBinding(jComboBoxBinding);

        jcbDignidades.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jcbDignidadesActionPerformed(evt);
            }
        });
        jPanelCandidatos.add(jcbDignidades);
        jcbDignidades.setBounds(110, 20, 230, 30);

        btnelector.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sisvoto/Recursos/User1.png"))); // NOI18N
        btnelector.setToolTipText("Seleccione un Elector para Asignar la Dignidad");
        btnelector.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnelectorActionPerformed(evt);
            }
        });
        jPanelCandidatos.add(btnelector);
        btnelector.setBounds(350, 20, 40, 30);

        jLblAlias.setFont(new java.awt.Font("Elephant", 0, 14));
        jLblAlias.setForeground(new java.awt.Color(255, 255, 255));
        jLblAlias.setText("Dignidades:");
        jPanelCandidatos.add(jLblAlias);
        jLblAlias.setBounds(10, 20, 120, 30);

        curvesPanel1.add(jPanelCandidatos);
        jPanelCandidatos.setBounds(30, 200, 400, 180);

        jBtnNuevo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sisvoto/Recursos/document_32.png"))); // NOI18N
        jBtnNuevo.setText("Nuevo");
        jBtnNuevo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBtnNuevoActionPerformed(evt);
            }
        });
        curvesPanel1.add(jBtnNuevo);
        jBtnNuevo.setBounds(440, 80, 120, 41);

        jBtnEditar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sisvoto/Recursos/Pencil3.png"))); // NOI18N
        jBtnEditar.setText("Editar");
        jBtnEditar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBtnEditarActionPerformed(evt);
            }
        });
        curvesPanel1.add(jBtnEditar);
        jBtnEditar.setBounds(440, 130, 120, 41);

        jBtnEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sisvoto/Recursos/trash_32.png"))); // NOI18N
        jBtnEliminar.setText("Eliminar");
        jBtnEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBtnEliminarActionPerformed(evt);
            }
        });
        curvesPanel1.add(jBtnEliminar);
        jBtnEliminar.setBounds(440, 180, 120, 41);

        jBtnBuscar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sisvoto/Recursos/search_32.png"))); // NOI18N
        jBtnBuscar.setText("Buscar");
        jBtnBuscar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBtnBuscarActionPerformed(evt);
            }
        });
        curvesPanel1.add(jBtnBuscar);
        jBtnBuscar.setBounds(440, 280, 120, 41);

        jBtnGuardar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sisvoto/Recursos/save_32.png"))); // NOI18N
        jBtnGuardar.setText("Guardar");
        jBtnGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBtnGuardarActionPerformed(evt);
            }
        });
        curvesPanel1.add(jBtnGuardar);
        jBtnGuardar.setBounds(440, 230, 120, 41);

        jBtnSalir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/sisvoto/Recursos/DeleteRed.png"))); // NOI18N
        jBtnSalir.setText("Salir");
        jBtnSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBtnSalirActionPerformed(evt);
            }
        });
        curvesPanel1.add(jBtnSalir);
        jBtnSalir.setBounds(440, 330, 120, 41);

        jLblAlias1.setFont(new java.awt.Font("Elephant", 0, 14));
        jLblAlias1.setForeground(new java.awt.Color(255, 255, 255));
        jLblAlias1.setText("Alias:");
        curvesPanel1.add(jLblAlias1);
        jLblAlias1.setBounds(150, 150, 50, 30);

        imagePanel1.add(curvesPanel1);
        curvesPanel1.setBounds(0, 0, 580, 400);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(imagePanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 585, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(imagePanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 402, Short.MAX_VALUE)
        );

        bindingGroup.bind();

        pack();
    }// </editor-fold>//GEN-END:initComponents

private void btnImagenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnImagenActionPerformed
// TODO add your handling code here:
    JFileChooser jfc = new JFileChooser();
    jfc.setDialogTitle("SELECCIONE LA IMAGEN");

    jfc.setCurrentDirectory(new File("C:/Users/Usuario"));
    jfc.setAcceptAllFileFilterUsed(false);
    jfc.addChoosableFileFilter(new FiltroImagen());
    int sel = jfc.showOpenDialog(null);
    if (sel == JFileChooser.APPROVE_OPTION) {
        String rutaOrigen = jfc.getSelectedFile().getAbsolutePath();
        dirImagen = rutaOrigen;
        panelImagen.setIcon(new ImageIcon(dirImagen));
        System.out.println(dirImagen + "Direccion imagen");
    } else {
        new Mensajes().StandarWarning(null, "IMAGEN NO SELECCIONADA");
        System.out.println(dirImagen + "estado actual");
    }
}//GEN-LAST:event_btnImagenActionPerformed

private void jBtnNuevoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnNuevoActionPerformed
// TODO add your handling code here:
    this.dispose();
    AdministrarPartidoElectoral ap = new AdministrarPartidoElectoral(null, true);
    ap.setLocationRelativeTo(this);
    ap.setVisible(true);
}//GEN-LAST:event_jBtnNuevoActionPerformed

private void btnelectorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnelectorActionPerformed
// TODO add your handling code here:
    if (jcbDignidades.getItemCount() == 0) {
        new Mensajes().ConfirmacionDialogowarning(this, "Aún No Se Han Ingresado las Dignidades");
        return;
    }
    BuscarElector be = new BuscarElector(null, true, this);
    be.setVisible(true);
    be.setLocationRelativeTo(this);

    if (elector.getId() == null) {
        return;
    }

    Dignidad aux = dignidades.get(jcbDignidades.getSelectedIndex());
    for (Candidato cx : candidatostemp) {
        if (cx.getDignidad().getNombre().equals(aux.getNombre())) {
            new Mensajes().StandarWarning(this, "Ya ha Registrado La Dignidad Seleccionada");
            return;
        }
        if (cx.getElector().getCedula().equals(elector.getCedula())) {
            new Mensajes().StandarWarning(this, "El Candidato Seleccionado \n Ya Posee Una Dignidad Asignada");
            return;
        }
    }
    if (!existecandidato(elector.getId())) {
        new Mensajes().StandarWarning(this, "Esta Persona Ya Es Un Candidato de Otra Lista");
        return;
    }

    Candidato c = new Candidato();
    c.setDignidad(aux);
    c.setElector(elector);
    candidatostemp.add(c);
    //modelotabla.getLista().add(c);
    modelotabla = new ModelTableCandidatos(candidatostemp);
    tblCandidatos.setModel(modelotabla);
    tblCandidatos.setDefaultRenderer(JButton.class, new BotonCellRenderer());
    tblCandidatos.setDefaultEditor(JButton.class, new BotonCellEditor(modelotabla, tblCandidatos, "CANDIDATOS", "NUEVO", candidatostemp));
    modelotabla.tamanioColumnas(tblCandidatos);
    modelotabla.tamanioFilas(tblCandidatos);
    //tblCandidatos.updateUI();
}//GEN-LAST:event_btnelectorActionPerformed

private void jBtnSalirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnSalirActionPerformed
// TODO add your handling code here:
    dispose();
}//GEN-LAST:event_jBtnSalirActionPerformed

private void jcbDignidadesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcbDignidadesActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_jcbDignidadesActionPerformed

private void jBtnGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnGuardarActionPerformed
// TODO add your handling code here:
    if (validarTodosLasDignidades()) {
        if (validarPartido()) {
            PartidoElectoralDAO pdao;
            // NUEVO PARTIDO ELECTORAL
            if (partido.getId() == null) {
                if(dirImagen.equals("")) {
                    new Mensajes().StandarWarning(this, "Ingrese una Imagen");
                   return; 
                }
                pdao = new PartidoElectoralDAO(partido);
                try {
                    pdao.persist();
                    if (saveImagen() == false) {
                        return;
                    } else {
                        for (Candidato c : candidatostemp) {
                            c.setPartido(partido);
                            CandidatoDAO cdao = new CandidatoDAO(c);
                            cdao.persist();
                            new Mensajes().StandarTick(this, "Guardado Exitosamente");
                        }
                        this.dispose();
                        AdministrarPartidoElectoral ap = new AdministrarPartidoElectoral(null, true);
                        ap.setLocationRelativeTo(this);
                        ap.setVisible(true);
                    }

                } catch (Exception ex) {
                    new Mensajes().StandarWarning(this, "No es Posible Guardar");
                }
            } else {
                // ACTUALIZAR PARTIDO ELECTORAL
                pdao = new PartidoElectoralDAO(partido);
                try {
                    pdao.update();
                } catch (Exception ex) {
                    new Mensajes().StandarWarning(this, "No es Posible Guardar");
                    System.out.println("actualizar partido");
                }

                if (!dirImagen.equals("")) {
                    List<ImagenPartido> im = new ConsultasBD().buscarPOR("ImagenPartido", "partido", "'" + String.valueOf(partido.getId()) + "'");
                    if (!im.isEmpty()) {
                        ImagenPartidoDAO imdao = new ImagenPartidoDAO(im.get(0));
                        try {
                            imdao.update();
                            imdao.remove();
                            saveImagen();
                        } catch (Exception ex) {
                            System.out.println("no se pudo eliminar foto");

                        }
                    }
                }


                for (Candidato c : candidatostemp) {
                    c.setPartido(partido);
                    CandidatoDAO cdao = new CandidatoDAO(c);
                    try {
                        cdao.persist();
                        new Mensajes().StandarTick(this, "Actualizado Exitosamente");
                    } catch (Exception ex) {
                        System.out.println("creando candidatos");
                    }

                }

                this.dispose();
                AdministrarPartidoElectoral ap = new AdministrarPartidoElectoral(null, true);
                ap.setLocationRelativeTo(this);
                ap.setVisible(true);

            }
        }
    }
}//GEN-LAST:event_jBtnGuardarActionPerformed

private void jBtnBuscarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnBuscarActionPerformed
// TODO add your handling code here:
    BuscarPartidoElectoral be = new BuscarPartidoElectoral(null, true, this);
    be.setLocationRelativeTo(this);
    be.setVisible(true);
}//GEN-LAST:event_jBtnBuscarActionPerformed

private void jBtnEditarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnEditarActionPerformed
// TODO add your handling code here:
    if (partido.getId() != null) {
        activarcasillas();
    }
}//GEN-LAST:event_jBtnEditarActionPerformed

private void jBtnEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnEliminarActionPerformed
// TODO add your handling code here:
    if (partido.getId() == null) {
        new Mensajes().StandarWarning(this, "Seleccione el Partido Que Desee Eliminar");
    } else {
        if (new Mensajes().ConfirmacionDialogowarning(this, "                              ¿Desea Eliminar Éste Partido? \n NOTA: Si Elimina éste Registro, Eliminará Tambien sus Candidatos.") == 0) {
            PartidoElectoralDAO pdao = new PartidoElectoralDAO(partido);
            try {
                pdao.update();
                pdao.remove();
                new Mensajes().StandarTick(this, "Eliminado Con Éxito");
                this.dispose();
                AdministrarPartidoElectoral ap = new AdministrarPartidoElectoral(null, true);
                ap.setLocationRelativeTo(this);
                ap.setVisible(true);
            } catch (Exception ex) {
            }
        }
    }
}//GEN-LAST:event_jBtnEliminarActionPerformed

    /**
     * @param args the command line arguments
     */


    public ArrayList<Candidato> getCandidatos() {
        return candidatos;
    }

    public void setCandidatos(ArrayList<Candidato> candidatos) {
        this.candidatos = candidatos;
    }

    public ArrayList<Dignidad> getDignidades() {
        return dignidades;
    }

    public void setDignidades(ArrayList<Dignidad> dignidades) {
        this.dignidades = dignidades;
    }

    public String getDirImagen() {
        return dirImagen;
    }

    public void setDirImagen(String dirImagen) {
        this.dirImagen = dirImagen;
    }

    public Image getImagen() {
        return imagen;
    }

    public void setImagen(Image imagen) {
        this.imagen = imagen;
    }

    public Candidato getCandidato() {
        return candidato;
    }

    public void setCandidato(Candidato candidato) {
        this.candidato = candidato;
    }

    public Elector getElector() {
        return elector;
    }

    public void setElector(Elector elector) {
        this.elector = elector;
    }

    public PartidoElectoral getPartido() {
        return partido;
    }

    public void setPartido(PartidoElectoral partido) {
        this.partido = partido;
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnImagen;
    private javax.swing.JButton btnelector;
    private com.mycsistemas.swingec.panel.CurvesPanel curvesPanel1;
    private com.mycsistemas.swingec.panel.ImagePanel imagePanel1;
    private javax.swing.JButton jBtnBuscar;
    private javax.swing.JButton jBtnEditar;
    private javax.swing.JButton jBtnEliminar;
    private javax.swing.JButton jBtnGuardar;
    private javax.swing.JButton jBtnNuevo;
    private javax.swing.JButton jBtnSalir;
    private javax.swing.JLabel jLblAlias;
    private javax.swing.JLabel jLblAlias1;
    private javax.swing.JLabel jLblNombre;
    private javax.swing.JLabel jLblPartidoElectoral;
    private javax.swing.JPanel jPanelCandidatos;
    private javax.swing.JPanel jPanelPartidoElect;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextField jTxtAlias;
    private javax.swing.JTextField jTxtNombre;
    private javax.swing.JComboBox jcbDignidades;
    private com.mycsistemas.swingec.panel.ImagePanel panelImagen;
    private javax.swing.JTable tblCandidatos;
    private org.jdesktop.beansbinding.BindingGroup bindingGroup;
    // End of variables declaration//GEN-END:variables

    private boolean tieneImagen(PartidoElectoral p) {
        ArrayList<ImagenPartido> imgen = (ArrayList<ImagenPartido>) new ConsultasBD().buscarPOR("ImagenPartido", "partido", "'" + p.getId() + "'");
        if (imgen.isEmpty()) {
            imgenpartido = null;
            return false;
        } else {
            imgenpartido = imgen.get(0);
            return true;
        }
    }

    private void ConsultarCandidatos() {
        if (partido.getId() != null) {
            candidatos = (ArrayList<Candidato>) new ConsultasBD().buscarPOR("Candidato", "partido", "'" + partido.getId() + "'");
            candidatostemp = candidatos;
            modelotabla = new ModelTableCandidatos(candidatos);
            tblCandidatos.setModel(modelotabla);
            tblCandidatos.setDefaultRenderer(JButton.class, new BotonCellRenderer());
            tblCandidatos.setDefaultEditor(JButton.class, new BotonCellEditor(modelotabla, tblCandidatos, "CANDIDATOS", "ACTUALIZAR", candidatostemp));
            modelotabla.tamanioColumnas(tblCandidatos);
            modelotabla.tamanioFilas(tblCandidatos);
        }
    }
    /*
    public void actualizarTabla() {
    if (candidato.getId() == null) {
    //this.candidatos = (ArrayList<Candidato>) new ConsultasBD().buscarPOR("Candidato", "partido", "'" + candidato.getPartido().getId() + "'");
    this.dignidades = (ArrayList<Dignidad>) new ConsultasBD().buscarTodos("Dignidad");
    modelotabla = new ModelTableCandidatos(null, dignidades,jTblCandidatos);            
    jTblCandidatos.setModel(modelotabla);
    //jTblCandidatos.setDefaultRenderer(JComboBox.class, new BotonCellRenderer());
    //jTblCandidatos.setDefaultEditor(JComboBox.class, new BotonCellEditorCombo(modelotabla, jTblCandidatos, "CANDIDATOS"));
    //jTblCandidatos.setDefaultRenderer(JTextField.class, new BotonCellRenderer());
    //jTblCandidatos.setDefaultEditor(JTextField.class, new BotonCellEditor(modelotabla, jTblCandidatos, "CANDIDATOS"));
    
    modelotabla.tamanioColumnas(jTblCandidatos);
    modelotabla.tamanioFilas(jTblCandidatos);
    jTblCandidatos.updateUI();
    }
    }
    
     */

    private boolean validarTodosLasDignidades() {

        if (candidatostemp.size() == jcbDignidades.getItemCount()) {
            return true;
        } else {
            new Mensajes().StandarWarning(this, "Ingrese Todos los Candidatos \n Para las Dignidades Existentes");
            return false;
        }

    }

    private boolean validarPartido() {
        if (!jTxtAlias.getText().isEmpty()) {
            if (!jTxtNombre.getText().isEmpty()) {
                return true;
            }
        }
        return false;
    }

    public boolean saveImagen() {
        if (imagen == null) {
            if (!dirImagen.equals("")) {
                try {
                    new ImagenPartido().guardarImagen(dirImagen, partido, this);
                    return true;
                } catch (IOException ex) {
                    new Mensajes().StandarWarning(this, "No se Puede Almacenar");
                }
            } else {
                new Mensajes().StandarWarning(this, "Ingrese la Imagen Del Partido");
                return false;
            }
        }
        return false;
    }

    private boolean existecandidato(int id) {
        ArrayList<Candidato> clist = (ArrayList<Candidato>) new ConsultasBD().buscarPOR("Candidato", "elector", "'" + String.valueOf(id) + "'");
        if (clist.isEmpty()) {
            return true;
        } else {
            return false;
        }
    }

    private void desactivarcasillas() {
        btnImagen.setEnabled(false);
        jTxtAlias.setEnabled(false);
        jTxtNombre.setEnabled(false);
        jcbDignidades.setEnabled(false);
        btnelector.setEnabled(false);
        tblCandidatos.setEnabled(false);
    }

    private void activarcasillas() {
        btnImagen.setEnabled(true);
        jTxtAlias.setEnabled(true);
        jTxtNombre.setEnabled(true);
        jcbDignidades.setEnabled(true);
        btnelector.setEnabled(true);
        tblCandidatos.setEnabled(true);
    }

    private void cargarImagen() throws IOException {
        ImagenPartido im = new ImagenPartido();
        Image imag = im.cargarImagen(partido.getId());
        if (imag != null) {
            this.panelImagen.setImage(imag);
        }
    }
}
